package com.sf.fy.uav.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sf.fy.uav.common.enums.SettingStatusEnum;
import com.sf.fy.uav.entity.Coupon;
import com.sf.fy.uav.entity.CouponActivity;
import com.sf.fy.uav.entity.CouponActivityDetail;
import com.sf.fy.uav.mapper.CouponActivityMapper;
import com.sf.fy.uav.service.ICouponActivityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 优惠券活动表 前端控制器
 * </p>
 *
 * @author LTQ
 * @since 2024-08-26
 */
@Controller
@RequestMapping("/sys/couponActivity")
public class CouponActivityController {

    @Autowired
    private ICouponActivityService iCouponActivityService;


    @Autowired
    private CouponActivityDetailController couponActivityDetailController;

    @Autowired
    private CouponActivityMapper couponActivityMapper;


    public CouponActivity getCouponActivity() {
        return iCouponActivityService.getCouponActivity();
    }

    public void downByCouponIds(List<String> couponIds) {
        List<CouponActivityDetail> couponActivityDetails = couponActivityDetailController.getDetailsByCouponIds(couponIds);
        if (!CollectionUtils.isEmpty(couponActivityDetails)) {
            this.downCouponActivity(couponActivityDetails.stream().map(CouponActivityDetail::getCouponActivityId).toList(), "优惠券" + couponIds.toString() + "出问题导致");
        }
    }


    public void downByStockNotEnough(String couponId, Integer stock) {
        List<CouponActivityDetail> couponActivityDetails = couponActivityDetailController.selByCouponIdAndStock(couponId, stock);
        if (!CollectionUtils.isEmpty(couponActivityDetails)) {
            this.downCouponActivity(couponActivityDetails.stream().map(CouponActivityDetail::getCouponActivityId).toList(), "优惠券" + couponId + "库存不足");
        }
    }

    private void downCouponActivity(List<String> couponActivityIds, String offReason) {
        List<CouponActivity> couponActivities = iCouponActivityService.selectNormalByBatchIds(couponActivityIds);
        couponActivities.forEach(couponActivity -> {
            couponActivity.setStatus(SettingStatusEnum.OFF.getStatus());
            couponActivity.setUpdateTime(new Date());
            couponActivityMapper.updateById(couponActivity);
        });
    }
}
